#房屋的页面显示类
from house_service import *
from untiilty import *
class HouseView:

    #定义属性house_operation【HouseService】
    house_operation : HouseService = HouseService()

    def update_house(self):
        """
           修改房屋信息
           """
        update_id = int(input("请选择修改的房屋编号(-1表示退出):"))
        if update_id == -1:
            print("你放弃修改房屋信息".center(32, "="))
            return
        # 根据id查找对应的房屋信息(字典)
        house = self.house_operation.find_by_id(update_id)
        # 如果房屋信息不存在
        if not house:
            print("没有要修改的房屋信息".center(32, "="))
            return

        # 注意，用户如果直接回车,代表不修改当前这个信息，保持原样就可以
        # name = input(f"姓名({house['name']}):")
        # if len(name) > 0:#如果用户输入的有内容
        #     #表示将接收到的name赋值给house字典 key="name"对应的值
        #     house['name'] = name
        #
        house.name = Untility.read_str(f"姓名({house.name}):", house.name)
        # phone = input(f"电话({house['phone']}):")
        # if len(phone) > 0:
        #     house['phone'] = phone
        #
        house.phone = Untility.read_str(f"电话({house.phone}):", house.phone)
        # address = input(f"地址({house['address']}):")
        # if len(address) > 0:
        #     house['address'] = address
        #
        house.address = Untility.read_str(f"地址({house.address}):", house.address)
        # rent = input(f"租金({house['rent']})")
        # if len(rent) > 0:
        #     house['rent'] = int(rent)
        #
        house.rent = Untility.read_str(f"租金({house.rent}):", house.rent)
        # state = input(f"状态({house['state']}):")
        # if len(state) > 0:
        #     house['state'] = state
        house.state = Untility.read_str(f"状态({house.state}):", house.state)
        print("修改房屋信息成功".center(32, "="))

    #查找房屋信息
    def find_house(self):
        print("查找房屋信息".center(32, "="))
        key = int(input("请输入要查找的id："))
        # 根据id查找房屋
        house = self.house_operation.find_by_id(key)
        # 如果房屋找到了
        if house:
            print("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)")
            print(house)
            print()
        else:
            print(f"查找房屋信息id{key}不存在".center(32, "="))

    # 退出系统的判断
    def exit_sys(self):
        """
        完成退出系统,并确认(Y/N)
        如果确认退出返回True,否则返回False
        """
        choice = Untility.read_confirm_select()
        if choice == 'y':
            return True
        else:
            return False


    def del_house(self):
        """
        根据id删除房屋信息
        """
        print("删除房屋信息".center(32, "="))
        del_id = int(input("请输入待删除房屋的编号(-1退出):"))
        if del_id == -1:
            print("放弃删除房屋信息".center(32, "="))
            return
        choice = Untility.read_confirm_select()
        if choice == 'y':  # 如果真的要删除
            # 根据del_id去列表中查找是否存在当前的房源

            if self.house_operation.del_by_id(del_id):
                # 指定删除操作, 根据内容进行删除
                print("删除房屋信息成功".center(32, "="))
            else:
                print("房屋编号不存在,删除失败...")
        else:
            print("放弃删除房屋信息".center(32, "="))


    def add_house(self):
        """
            添加房屋信息
            逻辑还是在这个层面写
            但是真正操作数据构建数据的就在服务层
        """
        print("添加房屋".center(32, "="))
        name = input("姓名:")
        phone = input("电话:")
        address = input("地址:")
        rent = int(input("租金"))
        state = input("状态:")
        # house = {"id": id_counter, "name": name, "phone": phone
        #     , "address": address, "rent": rent, "state": state}
        #构建房屋对象
        new_house = House(0 , name , phone ,address , rent , state)
        #调用service方法，添加new_house到房屋列表中
        self.house_operation.add(new_house)
        print("添加房屋成功".center(32, "="))


    def list_houses(self):
        """
        显示房屋列表
        """
        print("房屋列表".center(60, "="))
        # 打印表头信息
        print("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)")
        # 遍历这个houses这个列表
        # 去除的House就是一个字段
        # {"id" : 2 , "name" : "tim" , "phone" : "113" , "address" : "海淀区" , "rent" :"1600" , "state" : "未出租"}
        #获取houses列表 [这就是学习基础的原因 ， 基础学会了，这些也就自然就会了]
        houses = self.house_operation.get_houses()
        for house in houses:
            print(house)
            print()
        print("房屋列表显示完毕".center(60, "="))

    def main_menu(self):
        #本来显示页面程序除了显示页面的选项之外，也应该给用户提供输入
        #之前是写了一个方法调用 结合后面的程序  现在是直接写
        while True:
            """
                显示主菜单，让用户选择
                :return
                """
            print()
            print("房屋出租系统菜单".center(32, "="))
            print("\t\t\t1.新 增 房 源")
            print("\t\t\t2.查 找 房 源")
            print("\t\t\t3.删 除 房 屋 信 息")
            print("\t\t\t4.修 改 房 屋 信 息")
            print("\t\t\t5.房 屋 列 表")
            print("\t\t\t6.退 出")

            # 等待用户输入
            key = input("请输入你的选择(1-6):")
            if key in ["1", "2", "3", "4", "5", "6"]:
                if key == "1":
                   self.add_house()
                elif key == "2":
                    self.find_house()
                elif key == "3":
                    self.del_house()
                elif key == "4":
                   self.update_house()
                elif key == "5":
                    # 显示房屋列表信息
                    self.list_houses()
                elif key == "6":
                    if self.exit_sys():
                        print("你已经退出了系统...")
                        break



